#include "IWDG.h"

void IWDG_Init(uint16_t timeout_s) {
	// timeout_s：期望的看门狗超时时间（单位：秒）
    // 例如输入60表示60秒后未喂狗则复位
	
    // 1. 开启LSI时钟（约40KHz）
    RCC_LSICmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);

    // 2. 配置看门狗（60秒超时）
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    IWDG_SetPrescaler(IWDG_Prescaler_256);  // 40KHz/256≈156Hz
    IWDG_SetReload(156 * timeout_s);        // 156 * 60=9360
	
	// 3. 启动看门狗
    IWDG_ReloadCounter();
    IWDG_Enable();
}
